草庐IT

javascript var 与这个

全部标签

c++ - 这个模板中的类型是什么?

std::tr1::_Bind))(int&)>我明白了std::tr1::reference_wrapper整个事情是某种返回void的函数指针并采取int&作为论据。但一开始我似乎无法遵循*()。代码是从我前一段时间经历的某个gdbsession中剪切粘贴的。此外,tr1::function的类型是什么?某些返回void且不带参数的函数?0x00000001000021a1instd::tr1::function::operator()(this=0x7fff5fbffb98)atfunctional_iterate.h:865但是下面是一个错误:templatevoidf(){c

c++ - 为什么这个 boost::spirit::qi 规则与输入不匹配?

我试图继续处理我之前的示例并扩展规则。我的问题是,使用ID_IDENTIFIER的规则不起作用-虽然我知道词法分析器正在工作(使用单元测试)。例子如下:#include#includenamespaceqi=boost::spirit::qi;namespacelex=boost::spirit::lex;enumLexerIDs{ID_IDENTIFIER,ID_WHITESPACE,ID_INTEGER,ID_FLOAT,ID_PUNCTUATOR};templatestructcustom_lexer:lex::lexer{custom_lexer():identifier("[

c++ - 我如何优化/改进这个哈希函数

我有一个存储四叉树条目的哈希表。哈希函数如下所示:四叉树哈希#definenode_hash(a,b,c,d)\(((int)(d))+3*(((int)(c))+3*(((int)(b))+3*((int)(a))+3)))请注意,此操作的结果始终使用模素数进行分块,如下所示:h=node_hash(p->nw,p->ne,p->sw,p->se);h%=hashprime;...与最优哈希的比较一些统计分析表明,此哈希在减少冲突方面是最佳的。给定一个包含b个桶和n个条目的哈希表。使用完美哈希的碰撞风险是:(n-b*(1-power((b-1)/b,n))))*100/n当n=b时,

c++ - 这个 SFINAE 模式有名字吗?

在“太阳底下没有新鲜事”的规则下运作,我怀疑我是第一个想出这个把戏的人。我想我最终会偶然发现一些在线记录它的东西,但我还没有,所以我想我会问。它的目的是在不使用派生类的情况下有选择地启用某些相关的功能。这个图案有名字吗?有没有人有任何关于这种模式或类似运作模式的有用信息?templateclassPoint{public:templateusingEnable2D=typenamestd::enable_if::type;templateusingEnable3D=typenamestd::enable_if::type;templateusingEnable4D=typenamest

c++ - 这个技巧是否会使在构造函数 'just work' 中调用 shared_from_this() 变得危险?

C++专家的问题。我们都知道在类构造函数中调用shared_from_this()会导致bad_weak_ptr异常,因为尚未创建实例的shared_ptr。为了解决这个问题,我想到了这个技巧:classMyClass:publicstd::enable_shared_from_this{public:MyClass(){}MyClass(constMyClass&parent){//Createatemporarysharedpointerwithanull-deleter//topreventtheinstancefrombeingdestroyedwhenit//goesouto

c++ - 这个返回声明中发生了什么?

我正在阅读复制省略(以及它应该如何在C++17中得到保证),这让我有点困惑(我不确定我是否知道我以前认为我知道的事情)。所以这是一个最小的测试用例:std::stringnameof(intparam){switch(param){case1:return"1";//Acase2:return"2"//B}returnstd::string();//C}在我看来,案例A和案例B对返回值执行直接构造,因此复制省略在这里没有意义,而案例C不能执行复制省略,因为有多个返回路径。这些假设是否正确?我也想知道有一种更好的方式来写上面的内容(例如,有一个std::stringretval;并且总是

c++ - 为什么这个 SOR 求解器的速度取决于输入?

关于我的otherquestion,我现在修改了稀疏矩阵求解器以使用SOR(连续过度松弛)方法。现在的代码如下:voidSORSolver::step(){floatconstomega=1.0f;floatconst*b=&d_b(1,1),*w=&d_w(1,1),*e=&d_e(1,1),*s=&d_s(1,1),*n=&d_n(1,1),*xw=&d_x(0,1),*xe=&d_x(2,1),*xs=&d_x(1,0),*xn=&d_x(1,2);float*xc=&d_x(1,1);for(size_ty=1;y现在奇怪的是:如果我增加omega(松弛因子),执行速度开始显着

C++ 将一个 int 分配给一个 char - 为什么这个工作至少没有警告?

为什么C++(可能还有C)允许我在不给我警告的情况下将和int赋值给char?可以直接赋值吗,比如inti=12;charc=i;即做一个隐式转换,或者我应该使用static_cast?编辑顺便说一句,我正在使用gcc. 最佳答案 在发明显式强制转换语法之前,C中允许使用它。然后它仍然是一种常见的做法,所以C++继承了它,以免破坏大量代码。实际上大多数编译器都会发出警告。如果没有,请尝试更改其设置。 关于C++将一个int分配给一个char-为什么这个工作至少没有警告?,我们在Stack

c++ - 这个变量将如何初始化?

我有以下内容charmem_pool[1024*1024*64];intmain(){//...}我正在尝试彻底了解mem_pool将如何初始化。经过大量搜索,我的结论是:这是一个静态初始化(不是在static关键字中,而是在“在程序执行之前运行-在静态初始化阶段”)它将分两个阶段运行:零初始化和默认初始化(第二阶段不会做任何事情)它是一个POD数组,因此应该应用每个元素的默认初始化,但是由于前面的两点,我们不会有一个不确定值的数组(就像我们使用charar[N]在函数范围内)但是一个零数组。有人可以帮助我消除语言所保证的歧义并在我错的时候纠正我吗?我还想过做以下任何事情charmem

c++ - 我如何让这个递归规则起作用?

我想解析(首先,只识别,保留符号)LaTeX数学。现在,我遇到了super和下标的问题,结合花括号(例如a^{bc}及其组合,我有基本的a^b工作正常)。一个最小的例子(尽可能短,同时保持可读性):#includeusingstd::cout;#includeusingstd::string;#includenamespacex3=boost::spirit::x3;usingx3::space;usingx3::char_;usingx3::lit;usingx3::repeat;x3::rulescripts="super-andsubscripts";x3::rulebraced